package polymorphism;

/**
 * @author yuisama
 * @date 2022/09/14 19:19
 **/
public class Test {
    public static void main(String[] args) {
//        Dog dog = new Dog("66",5);
//        Cat cat = new Cat("喵喵",3);
//        fun(dog);
//        fun(cat);
//        Animal animal1 = buyAnimal("小狗");
//        Animal animal2 = buyAnimal("小猫");
//        animal1.eat();
//        animal2.eat();
        Animal animal = new Animal("动物",0);
        Dog dog = new Dog("66",5);
        Cat cat = new Cat("喵喵",3);
        animalEat(animal);
        animalEat(dog);
        animalEat(cat);
    }
    public static void animalEat(Animal animal) {
        animal.eat();
    }


    public static Animal buyAnimal(String animalName) {
        if (animalName.equals("小狗")) {
            return new Dog("狗剩",1);
        }else if (animalName.equals("小猫")) {
            return new Cat("喵喵",1);
        }else {
            System.out.println("本店没有该类型的动物出售");
            return null;
        }
    }
    // 方法形参是Animal父类的引用，但是根据传入的具体子类不同，表现出来的eat方法就不同
    // 这种特性就称之为对象的多态性
    public static void fun(Animal animal) {
        animal.eat();
    }


}